Unity製のブログ製造機みたいなもの
概要
今はやりのサーバレスWebをUnityで!!!
Unityで動くWebサイトジェネレータつくってみた。
これ。
Unidon
https://github.com/sassembla/Unidon
作った物体のサンプル(4.4MB + more)
https://dl.dropboxusercontent.com/u/36583594/outsource/UnidonWeb/index.html
現状のUnityでWebサイトを作る実用的な機構を目指したりしていた。
これ自体が欲しかったというより、この機構を拡張したものを作ってて、
要件切り出したら見事にCMSっぽい物体だったんでまとめた。習作みたいな。
ワンタッチで魅惑のビルド時間
こういうボタンがあるんで押してみるといいよ。
Motivation
・UnityのEditorから、単にPublishボタン押すとブログみたいなもの作れる、ってなったらいいよな
・できるだけLaunchページ軽くしたいよな
・できるだけUnityをそのままWebにしたいよな
・AssetBundleにするの勝手にできるといいよな
・ビルドの高速化したいよな
このあたりを成立させることができる構成を考えていた。だいたい叶ったと思う。
まだ欲が足りないが。
基礎設計
基礎部分、インデックスを担当するシーン、それ以外の記事の元になるシーン x Nという分割をする。
基礎部分はビューを持たず、インデックスとか他のシーンはすべて勝手にAssetBundleにして外部化される。
起動時に基礎部分のコードだけが動作し、自動的にインデックスのシーンを取りに行く。
基礎部分にシーンを持たないことで、軽量なエントリーポイントからいろいろできるようになった。
とにかく軽く。少なくともBloggerよりは軽量にしたい。無理か。
とりあえずindex以外のurlの分のhtmlも自動的に作成するようにしたい。(最終的にはnginxとかでアクセス時に生成すればいいような気がしている。
CMSっぽい物体なのに404を飲み込めないのやだな~っていうのがどうしてもある。
制約
シーンとその内容を自動的にAssetBundleにするのに、名前的な制約を使っている。
インデックスシーンは消せない。
今の所ほかの場所から特定のページをダイレクトに読み出す、っていうのができない(想定はある。
想定しているできたらいいな
リンク
外部リンクからでも該当のリソースだけを取得するように仕向けたい。これができると管理が楽。
ぶっちゃけ複数のシーンに対応するhtmlを置いて、CDNのそこにヒットしたらどっちにしてもjsが落とされ、
jsからはどこのurlから読み出されたのかが把握できるようになっているのでいきなりそのページ表示するのは可能。
必要なのはシーン単位でのhtmlジェネレータ。
軽量化
初動で1MB切りたい。WebAsmとかが来たら、なんとかなるかな~っていう楽観的な気持ちもあって、こういうのをつくっている。
HTMLのサイトと同じような触り心地
現状、UnityでのWebGLコンテンツはいろんなユーザーのイベントを吸い込む性質があるみたいだ。
command + Qとか、スクロールとか。
勝手にすいこまれてるんでどうしたもんかなっていう感じ。
文章とかコピペしたいじゃないですかー~~っていう。
スクロールバックとかちゃんと効いてほしい。現代の普通のWebサイトのフリがしたい。
ビルドの高速化
シーンの要素を調整とかUnity上でやった場合:10秒くらい
コードをいじった場合:1分くらい
自動的にAssetBundleに切り出した部分に関しては、ものすごく高速に変換できるようになった。
C#コードをいじった場合はこう、、なんだ、、どうしてもものすごいビルド時間がかかる。
1分とかかかる。
だめだ、、慣れてはいけない、死ぬぞ、、みたいな気持ちで見てる。